<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>14.in与hasOwnProperty的属性检测差异</title>
</head>

<body>
  <script>
    //使用in 检测原型链上是否存在属性，使用 hasOwnProperty 只检测当前对象
    let a = { url: "houdunren" };
    let b = { name: "后盾人" };
    Object.setPrototypeOf(a, b);
    console.log('name' in a);//true a没有这个属性，原型上有
    console.log(a.hasOwnProperty('url'));//true
    console.log(a.hasOwnProperty('name'));//false
    //使用 for/in 遍历时同时会遍历原型上的属性如下例 ，只遍历当前对象的属性要加上hasOwnProperty判断
    for(const key in a){
      if(a.hasOwnProperty(key)){
        const element = a[key];
        console.log(element);//houdunren
      }
    }
  </script>
</body>

</html>